package com.example.dbsample.service.impl;

import com.example.dbsample.mapper.SysMenuMapper;
import com.example.dbsample.model.entity.SysMenu;
import com.example.dbsample.service.business.SysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 菜单管理;(sys_menu)表服务实现类
 * @author : http://www.chiner.pro
 * @date : 2024-3-6
 */
@Service
public class SysMenuServiceImpl implements SysMenuService{
    @Autowired
    private SysMenuMapper sysMenuMapper;


    /** 
     * 通过ID查询单条数据 
     *
     * @param id 主键
     * @return 实例对象
     */
    public SysMenu queryById(Integer id){
        return sysMenuMapper.queryById(id);
    }

    public List<SysMenu> queryByName(String name){
        return sysMenuMapper.queryByName(name);
    }

    /** 
     * 分页查询
     *
     * @param sysMenu 筛选条件
     * @param pageRequest 分页对象
     * @return 查询结果
     */
    public Page<SysMenu> paginQuery(SysMenu sysMenu, PageRequest pageRequest){
        long total = sysMenuMapper.count(sysMenu);
        List<SysMenu> list = sysMenuMapper.queryAllByLimit(sysMenu, pageRequest);
        return new PageImpl<>(list, pageRequest, total);
    }
    
    /** 
     * 新增数据
     *
     * @param sysMenu 实例对象
     * @return 实例对象
     */
    public SysMenu insert(SysMenu sysMenu){
        sysMenuMapper.insert(sysMenu);
        return sysMenu;
    }
    
    /** 
     * 更新数据
     *
     * @param sysMenu 实例对象
     * @return 实例对象
     */
    public SysMenu update(SysMenu sysMenu){
        sysMenuMapper.update(sysMenu);
        return queryById(sysMenu.getId());
    }
    
    /** 
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    public boolean deleteById(Integer id){
        int total = sysMenuMapper.deleteById(id);
        return total > 0;
    }
}